package 框架学习.SpringBoot.原理.配置优先级;

/**
 * 配置优先级<p>
 * 详见项目<a href="#">springboot-priority-of-configuration</a>
 */
public class index {
    /**
     * 首先：springboot中支持的三类配置文件有：<p>
     * 1、properties文件 <p>
     * 2、yml文件<p>
     * 3、yaml文件<p></p>
     * <p>
     * 现在需要讨论的是，如果在三种配置文件中，同时配置了同一个属性<p>
     * 那么哪一个会生效<p></p>
     * <p>
     * 从项目中会发现，properties会生效，可见properties优先级最高<p>
     * 将properties注释后，生效的是yml<p></p>
     * <p>
     * 所以优先级：properties > yml > yaml<p></p>
     * <p></p>
     * <p>
     * springboot为了增强扩展性，除了支持配置文件属性配置之外，还支持 <a href="">Java系统属性</a> 和 <a href="">命令行参数</a> 的方式进行配置<p></p>
     * <p>
     * Java系统属性格式：<p>
     * -Dkey=value<p>
     * 如：-Dserver.port=8080<p></p>
     * <p>
     * 命令行参数格式<p>
     * --key=value<p>
     * 如：server=8080<p></p>
     * <p>
     * 这两种配置方式，可以在idea的界面中进行配置<p></p>
     * <p>
     * 对于这两种配置方式，命令行参数优先级更高<p></p>
     * <p>
     * <p>
     * 不在idea中，项目打包后怎么配置？<p>
     * 1、执行maven打包执行package<p>
     * 2、执行Java指令，运行jar包：<p>
     * java -Dkey=value -jar jar包文件名 --key=value<p></p>
     * <p>
     * 命令行参数 ＞虚拟机（Java系统属性） ＞properties ＞yml ＞yaml<p>
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
